Portable storage devices are routinely used to transfer data between computing devices or other devices. For example, Universal Serial Bus (USB) memory sticks, USB Flash memory drives, USB Flash memory cards, and other portable devices are often used to transfer data, image, or music files between computing devices or other devices. These portable devices offer great convenience to users, allowing the users to easily transfer data between devices.
Often times, the data stored on a portable storage device needs to be protected in some way. For example, the data may need to be protected because of privacy concerns, corporate or government security concerns, or copyright reasons. One solution has been to integrate “smartcard” functionality into a memory controller in a conventional portable storage device. Another solution has been to add an encryption device that acts as a slave to the memory controller in a conventional portable storage device. However, these solutions suffer from various problems or shortcomings, such as creating a weakness link or vulnerable point between the memory controller and the encryption device or remaining vulnerable to side channel attacks.